13231
22500
Tähän kysymykseen on jo annettu vastauksia täällä:
Express js - ei voi ohjata uudelleen
(4 vastausta)
Suljettu 7 vuotta sitten.
Käytän passportjs-tiedostoja, joiden alla on väliohjelmisto. Oletetaan, että tarkistetaan, onko käyttäjä kirjautunut sisään, kun hän pyytää tiettyjä asioita. Jos hän ei ole kirjautunut sisään, hänet tulisi ohjata kirjautumissivulle.
Minulla on pyyntöreitti seuraavasti:
app.put ('/ fantasyteams /: fantasyTeamId', auth. edellyttää login, fantasyteams.update)
Tätä reittiä kutsutaan, kun käyttäjä yrittää päivittää Fantasy Team -resurssia verkkosivustolla
auth.requiresLogin on väliohjelmisto seuraavasti:
export.requiresLogin = funktio (kysy, res, seuraava) {
if (req.isAuthenticated ()) {
palaa seuraavaksi ()
}
return res.redirect ("/ signin");
};
Kun olen kirjautunut käyttäjäni sisään, simuloin istunnon päättymistä poistamalla istuntoevästeen. Tämän jälkeen tein verkkosivustolta PUT '/ fantasyteams / 123' -pyynnön päivittää fantasiatiimin numero 123.
fantasyteams.update on yksinkertaisesti mongodb / mongoose-tallennusoperaatio:
export.update = funktio (kysy, res) {
var fantasyteam = req.fantasyteam;
fantasyteam = _.extend (fantasyteam, req.body);
fantasyteam.save (function (err) {
res.jsonp (fantasyteam);
});
};
Kuten odotettua, yllä oleva reitin käsittelijä (app.put ...) tarttui pyyntöön, välitti sen auth.requiresLogin-väliohjelmalle tarkistamaan, onko käyttäjä kirjautunut sisään. Joten käy ilmi, että käyttäjää ei ole kirjautunut sisään, koska poistin hänen istuntoevästensä. res.redirect kutsutaan odotetusti. Verkkosivusto ei kuitenkaan ohjaa sisäänkirjautumissivulle. Näen tämän node.js-komentolokeissa:
PUT / kirjautuminen 404328ms
Mitä tein väärin? 
Näyttää siltä, ​​että ongelmana on, että sinulla ei ole reitin käsittelijää PUT / kirjautumista varten. Alkuperäinen pyyntö oli put, joten kun se uudelleenohjaa, se on edelleen osa samaa "put" -pyyntöä selaimelta. Lisää vain käsittelijä put / post / mitä tahansa varten app.all ('/ signin')
3
|
Eikö vastausta etsit? Selaa muita kysymyksiä, jotka on merkitty node.js-istuntoevästeillä express passport.js tai esitä oma kysymyksesi.